﻿using System;

using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Maestro_Proveedores;

namespace Maestro_Proveedores.Forms
{
    public partial class ClasificacionBienesServicios : Form
    {
        /// <summary>
        /// Este registro tiene los permisos que tiene usuario que inicio sesion sobre el presente formulario (lectura, escritura, etc..)
        /// </summary>
        private Auditoria.CORPORATIVADataSet.SEG_PERMISOSRow seg_PERMRow = null;
        /// <summary>
        /// Identificador del formulario, esta variable utilizada para controlar el acceso al formulario y para realizar la auditoria
        /// </summary>
        public static string TIPO = "064";
        /// <summary>
        /// Este formulario tiene la responsabilidad de gestionar la informacion correspondienete a los Bienes/servicios que se manejan en la corporacion, permitiendo una optima clasificacion de los mismos. 
        /// </summary>
        public ClasificacionBienesServicios()
        {
            InitializeComponent();            
        }
               
        private void clasificacionProveedores_Load(object sender, EventArgs e)
        {
            this.pRV_grupoTableAdapter.Fill(this.cORPORATIVADataSet.PRV_grupo);
            this.pRV_tipo_servicioTableAdapter.Fill(this.cORPORATIVADataSet.PRV_tipo_servicio);
            this.pRV_servicioTableAdapter.Fill(this.cORPORATIVADataSet.PRV_servicio);
            //--- auditoria
            if (ConfiguracionDelSistema.auditar)
            {
                Session.SEG_PERMISOSTableAdapter.FillByTipoGrupo(Session.AUDITORIADataSet.SEG_PERMISOS, TIPO + Session.Seg_USUARRow.CODGRU);
                this.seg_PERMRow = Session.AUDITORIADataSet.SEG_PERMISOS[0];
            }
        }
        
        #region Exepciones en la insercion de datos

        private void dataError(object sender, DataGridViewDataErrorEventArgs e)
        {
           ((BindingSource)((DataGridView)sender).DataSource).CancelEdit();
        }

        #endregion

        #region Eventos asociados a los botones del BindingNavigator

        private void add_Click(object sender, EventArgs e)
        {
            BindingSource bs = ((BindingNavigator)((ToolStripButton)sender).GetCurrentParent()).BindingSource;
            try
            {
               //this.pRV_servicioBindingSource.RemoveFilter();
                this.filterText.Text = "";
                this.pRV_servicioBindingSource.RemoveFilter();
                this.cORPORATIVADataSet.PRV_servicio.RejectChanges();
                bs.CancelEdit(); 
                bs.AddNew();
              //  this.filterText.Text = "";
                
               
            }
            catch (Exception ex)
            {
                Maestro_Proveedores.herramientas.MessageException.show(ex);
            }
        }

        private void pRV_servicioSAVEBindingNavigator_Click(object sender, EventArgs e)
        {
            Cursor.Current = Cursors.WaitCursor;
            BindingSource bs = ((BindingNavigator)((ToolStripButton)sender).GetCurrentParent()).BindingSource;
            try
            {
                this.descripcionTextBox.Text = this.descripcionTextBox.Text.ToUpper();
                this.descripcionTextBox.Text = this.descripcionTextBox.Text.Replace((this.descripcionTextBox.Text.Substring(1)), (this.descripcionTextBox.Text.Substring(1).ToLower()));
                
                Validate();
                bs.EndEdit();
                
                //---auditoria
                if (ConfiguracionDelSistema.auditar)
                {
                    string[] usuArios = new string[] { Session.Seg_USUARRow.USUARIO, TIPO, string.Empty, string.Empty };
                    Session.AUDITORIADataSet.CargarAuditoria(this.cORPORATIVADataSet.PRV_servicio, usuArios, this.seg_PERMRow);
                    Session.AUDITORIADataSet.GuardarAuditoria();
                }
                //---actualizar la lista
                this.pRV_servicioTableAdapter.Update(this.cORPORATIVADataSet.PRV_servicio);
                this.filterText.Text = "";
                this.pRV_servicioBindingSource.RemoveFilter();
                //--- lo siguiente lo hago para verificar que se refresque la lista de servicios de la ventana REGISTRAR PROVEEDOR cada vez que se modifique dicha lista desde este formulario.
                ((INDEX)herramientas.Redirect.MdiContainer).aux = true;
            }
            catch (Exception ex)
            {
                Maestro_Proveedores.herramientas.MessageException.show(ex);
            }
            Cursor.Current = Cursors.Default;
        }

        private void deshacer_Click(object sender, EventArgs e)
        {
            Cursor.Current = Cursors.WaitCursor;
            BindingSource bs = ((BindingNavigator)((ToolStripButton)sender).GetCurrentParent()).BindingSource;
            try
            {
                foreach (DataTable dt in this.cORPORATIVADataSet.Tables)
                {
                    if (dt.TableName.Equals(bs.DataMember.ToString()))
                    {
                        dt.RejectChanges();
                        bs.CancelEdit();
                        return;
                    }
                }
            }
            catch (Exception ex)
            {
                Maestro_Proveedores.herramientas.MessageException.show(ex);
                bs.CancelEdit();
            }
            Cursor.Current = Cursors.Default;
        }

        private void filter_Click(object sender, EventArgs e)
        {
            Cursor.Current = Cursors.WaitCursor;
            BindingSource bs = ((BindingNavigator)((ToolStripButton)sender).GetCurrentParent()).BindingSource;
            try
            {
                this.pRV_servicioTableAdapter.Fill(this.cORPORATIVADataSet.PRV_servicio);
                this.filterText.Text = string.Empty;
                bs.RemoveFilter();                
            }
            catch (Exception ex)
            {
                Maestro_Proveedores.herramientas.MessageException.show(ex);
                bs.CancelEdit();
            }
            Cursor.Current = Cursors.Default;
        }

        private void filterText_TextChanged(object sender, EventArgs e)
        {

            Cursor.Current = Cursors.WaitCursor;
            BindingSource bs = ((BindingNavigator)((ToolStripTextBox)sender).GetCurrentParent()).BindingSource;
            ToolStripTextBox tb = (ToolStripTextBox)sender;
            try
            {
                bs.Filter = "descripcion like '%" + tb.Text + "%'";
                //String filtro = "descripcion like '%" + tb.Text + "%'";
                //bs.Filter = filtro;
                //MessageBox.Show("ok...");
            }
            catch (Exception ex)
            {
                Maestro_Proveedores.herramientas.MessageException.show(ex);
                bs.CancelEdit();
            }
            Cursor.Current = Cursors.Default;
        }

        #endregion

        private void XLStoolStripButton_Click(object sender, EventArgs e)
        {
            Exportacion.Exportacion.exportar(Exportacion.Exportacion.EnumTipoFormatosExportar.XLS, this.pRV_servicioDataGridView, "Clasificacion de bienes y servicios", false);
        }

        private void helpPictureBox_Click(object sender, EventArgs e)
        {
            Help.ShowHelp(this, ConfiguracionDelSistema.manualDeUsuario, HelpNavigator.TableOfContents);
        }

        private void comoSeHaceLinkLabel_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            try
            {
                System.Diagnostics.Process.Start(ConfiguracionDelSistema.directorioVideoTutoriales + "clasificacionBienesServicio.wmv");
            }
            catch (Exception ex)
            {
                herramientas.MessageException.show(ex);
            }
        }  
    }
}
